package com.jyw.business.ins.domain.dto.web;

import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import javax.validation.constraints.NotNull;
import java.time.LocalDate;
import java.util.List;

/**
 * @author Created by ZhangCheng on 2023/10/07
 */
@Data
@ApiModel("巡检计划添加请求实体")
public class InsPlanAddDto {

    /**
     * 业务ID （巡检资产 巡检单元）
     */
    @ApiModelProperty("业务ID （巡检资产 巡检单元）")
    @NotNull(message = "巡检资产/巡检单元不能为空")
    private Long businessId;

    /**
     * 计划类型（1巡检资产 2巡检单元）
     */
    @ApiModelProperty("计划类型（1巡检资产 2巡检单元）")
    @NotNull(message = "巡检计划类型不能为空")
    private Integer businessType;

    /**
     * 生效日期类型（1立即生效 2指定日期）
     */
    @ApiModelProperty("生效日期（1立即生效 2指定日期）")
    @NotNull(message = "生效日期不能为空")
    private Integer effectiveType;

    /**
     * 生效开始日期
     */
    @ApiModelProperty("生效开始日期")
    @JsonFormat(pattern = "yyyy-MM-dd")
    private LocalDate effectiveStartDate;

    /**
     * 生效结束日期
     */
    @ApiModelProperty("生效结束日期")
    @JsonFormat(pattern = "yyyy-MM-dd")
    private LocalDate effectiveEndDate;

    /**
     * 巡检责任人ID
     */
    @ApiModelProperty("巡检责任人ID")
    @NotNull(message = "巡检责任人不能为空")
    private Long inspectUserId;

    /**
     * 是否上传图片
     */
    @ApiModelProperty("是否上传图片")
    @NotNull(message = "请选择是否上传图片")
    private Boolean uploadPhoto;

    /**
     * 限期整改（1是 0否）
     */
    @ApiModelProperty("限期整改（1是 0否）")
    private Boolean deadlineRectify;

    /**
     * 转工单（1是 0否）
     */
    @ApiModelProperty("转工单（1是 0否）")
    private Boolean workOrder;

    /**
     * 是否启用（1是 0否）
     */
    @ApiModelProperty("是否启用（1是 0否）")
    @NotNull(message = "请选择是否启用")
    private Boolean isEnable;

    /**
     * 巡检周期（1每天 2每周 3每月 4每季度 5每半年 6每年）
     */
    @ApiModelProperty("巡检周期（1每天 2每周 3每月 4每季度 5每半年 6每年）")
    @NotNull(message = "巡检周期不能为空")
    private Integer inspectionCycle;

    /**
     * 巡检次数
     */
    @ApiModelProperty("巡检次数")
    @NotNull(message = "巡检次数不能为空")
    private Integer inspectionNum;

    /**
     * 每周多选（逗号分隔开 0不限制 1-7）
     */
    @ApiModelProperty("每周多选（逗号分隔开 0不限制 1-7）")
    private String weekly;

    /**
     * 每月多选（逗号分隔开 0不限制 1-31）
     */
    @ApiModelProperty("每月多选（逗号分隔开 0不限制 1-31）")
    private String monthly;

    /**
     * 到期宽限天
     */
    @ApiModelProperty("到期宽限天")
    private Integer graceDay;

    /**
     * 是否固定时间
     */
    @ApiModelProperty("是否固定时间")
    private Boolean isFixedTime;

    /**
     * 跳过节假日（1是 0否）
     */
    @ApiModelProperty("跳过节假日（1是 0否）")
    private Boolean skipHoliday;

    /**
     * 跳过周末（1是 0否）
     */
    @ApiModelProperty("跳过周末（1是 0否）")
    private Boolean skipWeekend;

    /**
     * 处理规则（1直接跳过 2次日处理）
     */
    @ApiModelProperty("处理规则（1直接跳过 2次日处理）")
    private Integer processingRule;

    /**
     * 处理规则（1直接跳过 2次日处理）
     */
    @ApiModelProperty("关联巡检项ID")
    private List<Long> configItemIds;

    /**
     * 巡检计划执行时间多条
     */
    @ApiModelProperty("巡检计划执行时间多条")
    private List<InsPlanExecutionTimeDto> executionTimeList;
}
